package csp;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import csp.Knoten.Werte;

import minConflicts.MinConflicts;
import kantenkonsistenz.KantenKonsistenz;

public class problem {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {

		// erstelle Knoten und ordne in Liste ein
		int i = 0;
		List<Knoten> europa = new ArrayList<Knoten>();
		while(true){
			i++;
			try{
				Knoten test = new Knoten(i);
				europa.add(test);
				System.out.println("Nr. " + i + ", " + europa.get(i-1).name + " erzeugt");
			}
			catch(NullPointerException ex){
				System.out.println("Dateiende erreicht!");
				break;
			}
		}
		
		// erzeuge Nachbarn
		// !! Nie mehr anfassen !!
		for( int j = 0; j < europa.size(); j++){
			for( int k = 0; k < europa.get(j).nachbarList.size(); k++){
				for (int m = 0; m < europa.size(); m++){
					if((europa.get(j).nachbarList.get(k).equals(europa.get(m).name))){
						europa.get(j).nachbarn.add(europa.get(m));
						break;
					}
				}
			}
			//europa.get(j).printKnotenArgs();
			//europa.get(j).printNachbarn();
		}

		/*
		 *  Hier eigene Aufrufe hinschreiben
		 */
		
		// Gruppe: Kantenkonsistenz ------------------------------------------
		KantenKonsistenz.ac3(europa);
		// -------------------------------------------------------------------		
		
		// Gruppe: MinConflicts
		//MinConflicts minConflicts = new MinConflicts();
		//minConflicts.setRandomCSPValues(europa);
		//minConflicts.minimizeConflicts(europa);
		//
		
		
		
		
		/*
		 * Ende eigene Aufrufe
		 */
		
		for ( i = 0; i < europa.size(); i++){
			europa.get(i).printNachbarn();
			europa.get(i).printWert();
		}
	}

}
